What is the difference between pure functions and impure functions